﻿using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

using Telerik.Web.UI;
using SMA.GENTEv1;

public partial class Protegidos_Empresas_Documentos_edDiversosBenefAssistOdon : PageBase
{
    private bool exclusao = false;

    protected void Page_Load(object sender, EventArgs e)
    {
        try
        {
            if (!IsPostBack)
            {
                CarregarComboAno(rcbAno);
                CarregarComboLocalidade(rcbLocalidade);
                OcultaCampos(true);
                hdIdContrato.Value = IdContrato.ToString();
            }
        }
        catch (Exception ex)
        {
            ExibirMensagem(true, ex.Message);
        }
    }

    #region Eventos
    protected void btnPesquisar_Click(object sender, EventArgs e)
    {
        try
        {
            Pesquisa();
            rgBeneficiosAO.DataBind();
            OcultaCampos(false);
            OcultaMsgPagina(true);
        }
        catch (Exception ex)
        {
            ExibirMensagem(true, ex.Message);
        }
    }

    protected void btnLimpar_Click(object sender, EventArgs e)
    {
        try
        {
            rcbAno.Text = "";
            rcbLocalidade.Text = "";
            OcultaCampos(true);
            OcultaMsgPagina(true);
        }
        catch (Exception ex)
        {
            ExibirMensagem(true, ex.Message);
        }
    }

    protected void rgBeneficiosAO_NeedDataSource(object source, Telerik.Web.UI.GridNeedDataSourceEventArgs e)
    {
        try
        {
            Pesquisa();
            if (!exclusao) OcultaMsgPagina(true);
        }
        catch (Exception ex)
        {
            ExibirMensagem(true, ex.Message);
        }
    }

    protected void rgBeneficiosAO_DeleteCommand(object sender, Telerik.Web.UI.GridCommandEventArgs e)
    {
        try
        {
            BeneficioOrganizacaoDocto beneficio = new BeneficioOrganizacaoDocto();

            GridEditableItem editedItem = e.Item as GridEditableItem;

            exclusao = true;
            int idBeneficio = int.Parse(editedItem.OwnerTableView.DataKeyValues[editedItem.ItemIndex]["IdOrganizacaoBeneficio"].ToString());
            beneficio.IdOrganizacaoBeneficio = idBeneficio;
            beneficio.Excluir(Server.MapPath("~/Arq"));

            OcultaMsgPagina(true);
        }
        catch (Exception ex)
        {
            ExibirMensagem(true, ex.Message);
        }
    }

    protected void RadAjaxManager1_AjaxRequest(object sender, AjaxRequestEventArgs e)
    {
        try
        {
            CarregarComboAno(rcbAno);
            CarregarComboLocalidade(rcbLocalidade);
            Pesquisa();
            rgBeneficiosAO.DataBind();
            OcultaCampos(false);
            OcultaMsgPagina(true);
        }
        catch (Exception ex)
        {
            ExibirMensagem(true, ex.Message);
        }
    }
    #endregion

    #region Métodos
    private void CarregarComboAno(RadComboBox combo)
    {
        try
        {
            BeneficioOrganizacaoDocto beneficio = new BeneficioOrganizacaoDocto();

            combo.DataTextField = "Ano";
            combo.DataValueField = "Ano";
            combo.DataSource = beneficio.CarregarComboAno(IdPrestador, (int)TipoBeneficio.TipoBenef.Assistencia_Odontologica);
            combo.DataBind();

            if (Session["WorkFlow"] != null)
            {
                RadComboBoxItem itemAno = combo.FindItemByValue(Request.QueryString["AnoWF"].ToString());
                if (itemAno == null)
                {
                    combo.Items.Add(new RadComboBoxItem(Request.QueryString["AnoWF"].ToString(), Request.QueryString["AnoWF"].ToString()));
                    itemAno = combo.FindItemByValue(Request.QueryString["AnoWF"].ToString());
                }
                combo.SelectedIndex = itemAno.Index;
            }

            combo.Text = "";
        }
        catch (Exception ex)
        {
            throw ex;
        }
    }

    private void CarregarComboLocalidade(RadComboBox combo)
    {
        try
        {
            BeneficioOrganizacaoDocto beneficio = new BeneficioOrganizacaoDocto();

            combo.DataTextField = "NomeCidade";
            combo.DataValueField = "IdCidade";
            combo.DataSource = beneficio.CarregarComboCidade(IdPrestador, (int)TipoBeneficio.TipoBenef.Assistencia_Odontologica);
            combo.DataBind();

            if (Session["WorkFlow"] != null)
            {
                RadComboBoxItem itemAno = combo.FindItemByValue(Request.QueryString["LocalidadeWF"].ToString());
                if (itemAno == null)
                {
                    combo.Items.Add(new RadComboBoxItem(Request.QueryString["LocalidadeWF"].ToString(), Request.QueryString["LocalidadeWF"].ToString()));
                    itemAno = combo.FindItemByValue(Request.QueryString["LocalidadeWF"].ToString());
                }
                combo.SelectedIndex = itemAno.Index;
            }

            combo.Text = "";
        }
        catch (Exception ex)
        {
            throw ex;
        }
    }

    private void Pesquisa()
    {
        try
        {
            rgBeneficiosAO.DataSource = CarregarProtocolos();
        }
        catch (Exception ex)
        {
            throw ex;
        }
    }

    private DataTable CarregarProtocolos()
    {
        try
        {
            DataTable protocolo = new DataTable();
            BeneficioOrganizacaoDocto beneficio = new BeneficioOrganizacaoDocto();

            int ano = (rcbAno.SelectedValue == string.Empty) ? 0 : int.Parse(rcbAno.SelectedValue);
            int localidade = (rcbLocalidade.SelectedValue == string.Empty) ? 0 : int.Parse(rcbLocalidade.SelectedValue);

            protocolo = beneficio.SelectPor(IdPrestador, (int)TipoBeneficio.TipoBenef.Assistencia_Odontologica, ano, localidade);

            return protocolo;
        }
        catch (Exception ex)
        {
            throw ex;
        }
    }

    private void OcultaCampos(bool oculta)
    {
        try
        {
            trResultado.Visible = !oculta;
        }
        catch (Exception ex)
        {
            throw ex;
        }
    }

    private void ExibirMensagem(bool _msgErro, string _textoMsg)
    {
        try
        {
            OcultaMsgPagina(false);
            if (_msgErro)
            {
                lblResultado.ForeColor = System.Drawing.Color.Red;
                lblResultado.Text = _textoMsg;
            }
            else
            {
                lblResultado.ForeColor = System.Drawing.Color.Black;
                lblResultado.Text = _textoMsg;
            }
        }
        catch (Exception ex)
        {
            throw ex;
        }
    }

    private void OcultaMsgPagina(bool oculta)
    {
        try
        {
            trMensagem.Visible = !oculta;
        }
        catch (Exception ex)
        {
            throw ex;
        }
    }
    #endregion
}
